package org.fastmvc.factory;

import org.fastmvc.exception.BeansException;
import org.fastmvc.exception.NoSuchBeanException;

/**
 * <类描述>
 *
 * @author tangch
 * @date 2017年11月07日 17:17
 */
public interface BeanFactory {

	/**
	 *
	 * @param clazz
	 * @param <T>
	 * @return
	 * @throws BeansException
	 */
	<T> T getBean(Class<T> clazz) throws BeansException;

	/**
	 *
	 * @param var1
	 * @param <T>
	 * @return
	 */
	<T> boolean containsBean(Class<T> var1);

	/**
	 *
	 * @param clazz
	 * @param <T>
	 * @return
	 * @throws NoSuchBeanException
	 */
	<T> boolean isSingleton(Class<T> clazz) throws NoSuchBeanException;

	/**
	 *
	 * @param clazz
	 * @param <T>
	 * @return
	 * @throws NoSuchBeanException
	 */
	<T> boolean isPrototype(Class<T> clazz) throws NoSuchBeanException;

}
